--[[
描述 ： UIDropMenu 控件
作者 ： 付大志
时间 ： 15/11/02
注意：1. 此控件不可直接添加在ScrollView上  只可以添加到view上
     2.此控件弹出选项框的高度是根据父视图的高度决定的 如果父视图和它等高 那么弹出选项高度为0
]]

UIDropMenu = Class(MLView,'UIDropMenu');

UIDropMenu.mWidth 				= nil;     	-- 宽度
UIDropMenu.mHeight 				= nil;     	-- 高度
UIDropMenu.arrays            = nil;   -- 数据数组
UIDropMenu.curSel         = nil ;      -- 当前选中的数据索引
UIDropMenu.cellHeight         = AW(35)  ;     -- 行高
UIDropMenu.lable =  nil;
UIDropMenu.button =  nil;
UIDropMenu.scrollView =  nil;
UIDropMenu.bgview    = nil;

UIDropMenu.onMenuClick = nil ; --点击事件

UIDropMenu.mBgImage   = nil;     --设置背景图片
UIDropMenu.rButtonImage    = nil; --右侧按钮图片
UIDropMenu.fontHeight    = nil; --字体大小
--[[
功能   ： 初始化 宫格 控件
参数   ： w     		宽度
	     h     		高度
	     viewCtrl	所在Ctrl
	     id			控件id
返回   ： button 实例
]]

function UIDropMenu:initDropMenu(width, height, viewCtrl, id)

  width  = width or UITheme.BUTTON_WIDTH;
  height = height or UITheme.BUTTON_HEIGHT;


  self:initView(width, height, viewCtrl, id);

  self.curSel = 1;
  self.mWidth = width;
  self.mHeight = height;
  self.mBgImage = UIImage.imageName('system/dropBg.png') ;
  self.rButtonImage = UIImage.imageName('system/down.png') ;
  self.fontHeight = AW(16) ;

  local x =AW(8);
  local y = AW(5);
  local w = width - AW(10);
  local h = height - AW(10);

  self:setBg(self.mBgImage);
  self.arrays ={};

  self.button =  UIImageView.new():init(self.rButtonImage,h, h, viewCtrl);
  self:add(self.button,w -h + AW(5),y);

  self.lable =  UILabel.new():init("",w -h, h,viewCtrl);
  self.lable.fontHeight = self.fontHeight
  self:add(  self.lable,x,y);
  self.onClick = function ()
    
    if self.bgview ~= nil then return end
    local parent = self.weekTable.mParent;
    if parent == nil then return end;
    local w,h = self.mWidth, parent.mHeight - self.mHeight - self.mY;
    local num = #self.arrays;
    local th =   num *UIDropMenu.cellHeight;

    if   th < h then h = th end
    local bgw,bgh =w - AW(10),h;
    self.bgview =  MLView.new():initView(w - AW(10),h,viewCtrl);
    local g = self.bgview:getGraphic();
    g:clear();
    g:drawRect( 0, 0, w-  AW(10), h, 0xeeeeee, 3)
    parent:add(self.bgview,self.mX+AW(5), self.mY + self.mHeight-AW(2));

    self.scrollView =  UIScrollView.new();
    self.scrollView:init(bgw - AW(2), bgh - AW(2), false,viewCtrl);
    self.scrollView:setColor(0xffffff);
    for i=1, #self.arrays do
      local cell = UIDropMenuItem.new():init(self.mWidth,UIDropMenu.cellHeight, viewCtrl);
      cell:setText(self.arrays[i]);
      cell.bgImage = nil;
      cell.focusImage = nil;
      cell.index = i;
      cell.parent = self;
      cell:draw();

      cell.onClick = function ()
        --self:onCellOnClick(self.curSel);
        self.curSel = cell.index;
        
        self.onMenuClick(self.curSel);
        parent:del( self.bgview);
        self.bgview = nil;

      end
      self.scrollView:add(cell);
    end
    self.bgview:add(self.scrollView, AW(1),AW(1))

  end
  return self;
end
-- 收起menu
function UIDropMenu:resume(index)
  if self.bgview ~= nil then
         local parent = self.weekTable.mParent;
         if parent then 
            parent:del( self.bgview);
            self.bgview = nil
         end
    return
  end
end

function UIDropMenu:onCellOnClick(index)
  self.curSel = index;

end

--[[
功能   ： 设置选中的索引
参数   ： index 索引
返回   ： 无
]]
function UIDropMenu:setCurSel(index)
  self.curSel = index;  

end

--[[
功能   ： 设置数据
参数   ： items  数据数组
返回   ： 无
]]
function UIDropMenu:setTexts(items)

  self.arrays  = items ;

end

--[[
功能   ： 画控件
参数   ： 无
返回   ： 无
]]
function UIDropMenu:draw()
  self.button:show()
  self.lable:show();
  if #self.arrays > 0 then
    self.lable:setText(self.arrays[self.curSel])
    self.lable:show();
  end

end

--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function UIDropMenu:show()
  self:draw();
end

--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function UIDropMenu:update()
  self:draw();
end

--[[
功能   ： 点击事件
参数   ： index  ： 索引
返回   ： 无
]]
function UIDropMenu:onClick(index)
end



--[[
 控件使用:
   local aa   = UIDropMenu.new():initDropMenu(AW(200), AW(40), self)
    aa.onMenuClick = function (index)
    print('iiiiiiii', index) 
    aa:setCurSel(index);
    aa:show();
     end

  aa:setTexts({'建筑系','科学系','发展系','化学系'})
      
  aa:setCurSel(1);
 rootView:add(aa, AW(20), AH(50));
--]]
